package design.graduation.novelsystem.service;

import com.baomidou.mybatisplus.extension.service.IService;
import design.graduation.novelsystem.model.domian.Role;
import design.graduation.novelsystem.model.dto.DataGridView;
import design.graduation.novelsystem.model.vo.RoleVo;

import java.util.List;

/**
 * @author: 洪少尉
 * @Date: 2020/4/14 02:54
 * @Description: 
 */
public interface RoleService extends IService<Role>{
	/**
	 * 根据管理员id查询拥有的角色名称
	 * 用于赋予ActiveAdmin的角色信息
	 * @param adminId 管理员id
	 * @return 角色名称集合
	 */
	List<String> queryRoleNamesByAdminId(Integer adminId);

	/**
	 * 用于角色管理表单数据
	 * @param roleVo 查询条件
	 * @return 全部角色数据
	 */
	DataGridView queryAllRole(RoleVo roleVo);

	/**
	 * 保存角色
	 * @param role 角色信息
	 * @return true/false
	 */
	boolean saveRole(Role role);

	/**
	 * 更新角色
	 * @param role 角色信息
	 * @return true/false
	 */
	boolean updateRole(Role role);

	/**
	 * 查询所有可用角色
	 * 同时对选中管理者所拥有的角色进行反选
	 * @param roleVo 角色信息
	 * @return 角色
	 */
	DataGridView queryAllAvailableRoleNoPage(RoleVo roleVo);

	/**
	 * 根据角色ID查询角色拥有的菜单和权限ID
	 * @param id  角色id
	 * @return 角色拥有的菜单和权限ID
	 */
	List<Integer> queryMenuIdsByRid(Integer id);

	/**
	 * 保存角色的菜单权限
	 * 有删除和添加菜单权限的功能
	 * @param rid 角色id
	 * @param mids 菜单id集合
	 * @return true/false
	 */
	boolean saveRoleMenu(Integer rid, Integer[] mids);

}
